package com.eova.common.until;

import java.util.Random;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 
 * 字符串工具类，提供常见的字符串操作
 */
public class StringUtil {
	/** 匹配数字的数字正则表达式 */
	public static final String REGEX_NUMBER = "\\d+";

	// 防止直接实例化

	private StringUtil() {
	};

	/**
	 * 
	 * 为空或者空白
	 * 
	 * @param str
	 * 
	 * @return 如果为空就返回true
	 */
	public static boolean isEmptyOrBlank(String str) {
		return str == null || str.trim().length() <= 0;
	}

	/**
	 * 
	 * 不为空或者空白
	 * 
	 * @param str
	 * 
	 * @return 如果不为空就返回true
	 */
	public static boolean isNotEmptyOrBlank(String str) {

		return str != null && str.trim().length() > 0;

	}

	/**
	 * 检测某个字符变量是否为空；<br>
	 * 为空的情况，包括：null，空串或只包含可以被 trim() 的字符；
	 */
	public final static boolean isEmpty(String value) {
		if (value == null || value.trim().length() == 0)
			return true;
		else
			return false;
	}

	/**
	 * 抽取出字符串中的所有数字,如果没有数字字符，则返回空字符串
	 */
	public static String drawNumber(String source) {
		return drawMatches(source, REGEX_NUMBER);
	}

	/**
	 * 从字符串中取出满足正则表达式条件的字符串
	 */
	public static String drawMatches(String source, String regex) {
		Matcher matcher = getMatcher(source, regex);
		StringBuffer buff = new StringBuffer();
		while (matcher.find()) {
			buff.append((matcher.group()));
		}
		return buff.toString();
	}

	/** 返回字符串source匹配正则表达式regex的matcher实例(regex对大小写敏感) */
	public static Matcher getMatcher(String source, String regex) {
		Pattern pattern = Pattern.compile(regex);
		return pattern.matcher(source);
	}

	/**
	 * 验证是否为坐标的格式
	 */
	public static boolean validateLocation(String location) {
		if (StringUtil.isEmpty(location)) {
			return false;
		} else if (!location.contains(",")) {
			return false;
		}
		return true;
	}

	/**
	 * 组装sql where语句
	 * 
	 * @param buildsql
	 * @return
	 */
	public static StringBuffer addWhere(StringBuffer buildsql) {
		if (buildsql.toString().contains("where")
				|| buildsql.toString().contains("WHERE")) {
			// 第一次拼接 where子句不需要and
			buildsql.append(" AND ");
		} else {
			// 不是第一次拼接where，则需要加'and'
			buildsql.append(" WHERE ");
		}
		return buildsql;
	}

	/**
	 * 将小写的数字转换为大写 --gyp eg:输入11 return 一一
	 * 
	 * @param num
	 * @return
	 */
	public static String numToUpper(Object value) {
		String u[] = { "〇", "一", "二", "三", "四", "五", "六", "七", "八", "九" };
		char[] str = String.valueOf(value).toCharArray();
		String rstr = "";
		for (int i = 0; i < str.length; i++) {
			rstr = rstr + u[Integer.parseInt(str[i] + "")];
		}
		return rstr;
	}

	/**
	 * 
	 * 描述: 生成一个随机数 作者:gyp
	 */
	public static int buildNumber() {
		int max = 3;
		int min = 1;
		Random random = new Random();
		int s = random.nextInt(max) % (max - min + 1) + min;
		System.out.println(s);
		return s;
	}

}
